/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package svntests;

import com.sun.corba.se.impl.resolver.SplitLocalResolverImpl;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.StringTokenizer;

/**
 *
 * @author matheuscas
 * This is class test to colaborative work with subversion for "dummies"
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO Cada um de vocês fará uma modificação específica neste arquivo
	//Isto simulará o trabalho colaborativo que vocês terão (até de uma maneira conflituosa, já que este exemplo trata de modificações no mesmo arquivo)
        //A idéia aqui não é, fundamentalmente, saber o que vocês sabem de Java e sim pedir a vocês que insiram funcionalidades (bobas) dependentes ou não umas das outras
	//para que se ambientalizem com os trâmites e comandos do SVN e também dos eventuais conflitos de código
        //Bom, este exemplo nada mais é do que extrair logins e hosts dos emails abaixo e exibi-los. Mais abaixo segue as funções que cada um deverá implementar

        //Lembrem-se de limpar (e antes de tudo o UPDATE) o projeto antes do commit, para nao enviar .class e outros "lixos"

        String foo = "gabriel.ecomp@gmail.com, mengueiro2@hotmail.com, jpalmeida.uefs@gmail.com, lari.rsoares@gmail.com, maricotaecomp@gmail.com";

	ArrayList<String> separatedEmails = splitOut(foo);
	ArrayList<String> logins = extractLogins(separatedEmails);
	ArrayList<String> hosts = extractHosts(separatedEmails);
	Hashtable<String,String> indexedHosts = correlateHosts(hosts);
	formattedOut(logins,indexedHosts);   
    }

    //Esse método somente separará os emails (sem vírgulas) em strigs individuais e as armazenará em um arraylist de strings
    //formato: login@host.com
    //TODO Responsável: Gabriel
    private static ArrayList<String> splitOut(String foo){

        StringTokenizer st = new StringTokenizer(foo);
        ArrayList<String> SList = new ArrayList<String>();

        while (st.hasMoreTokens()){
                     SList.add(st.nextToken(", "));


                 }

              return SList;

             

	
    }

    //Este método extrairá da lista de emails os logins de cada email e os armazenará em outro arraylist de strings
    //TODO Responsável: Igor
    private static ArrayList<String> extractLogins(ArrayList<String> emails) {
        ArrayList<String> Array = new ArrayList<String>();

        String[] vector = new String[5];
        String[] vector2 = new String[1];
        String foo = "gabriel.ecomp@gmail.com, mengueiro2@hotmail.com, jpalmeida.uefs@gmail.com, lari.rsoares@gmail.com, maricotaecomp@gmail.com";
       // StringTokenizer token = new StringTokenizer(foo);

        vector = foo.split("[,]");

        for (int i = 0; i < vector.length; i++) {
            vector2 = vector[i].split("[@]");
            String teste = vector2[0];
            Array.add(teste);
        }
        return null;
    }

    //Este método extrairá da lista de emails os hosts de cada email e os armazenará em outro arraylist de strings
    //formato: host (sem o ".com")
    //TODO Responsável: João Paulo
    private static ArrayList<String> extractHosts(ArrayList<String> emails) {
        
        ArrayList<String> Array = new ArrayList<String>();

       String[] sem_com = new String[1];
       String[] separa = new String[10];
       String auxiliar;
       String[] hosts = new String[10];
       String foo = "gabriel.ecomp@gmail.com, mengueiro2@hotmail.com, jpalmeida.uefs@gmail.com, lari.rsoares@gmail.com, maricotaecomp@gmail.com";
       
        separa = foo.split("[@,]");
        
        for(int j = 0; j < separa.length; j++ ){
            
           if( j%2 != 0 ){
               //separa hosts
               hosts[j] = separa[j]; 
               auxiliar = hosts[j];
               
               //retira os .com
               sem_com = auxiliar.split(".com");
               auxiliar = sem_com[0];
               
               Array.add(auxiliar);
           }        
        }        
       return null;
    }
              
    //Este método correlacionará os hosts extraídos com as respectivas urls destes host (podem inserir as urls manualmente mesmo :) )
    //formato (na hashtable): host,url ex: hotmail,www.hotmail.com
    //TODO Responsável: Larissa
    private static Hashtable<String,String> correlateHosts(ArrayList<String> hosts) {
        
        Hashtable<String,String> hash = null;
       //hash();
        String aux = null;
       for(int i = 0; i<6; i++){
          aux = (String)hosts.get(i);
           System.out.println("hosts:" + hosts);
          if (aux.equals("hotmail")){
              hash.put(aux, "www.hotmail.com");
          }
          else if(aux.equals("gmail")){
                  hash.put(aux, "www.gmail.com");
          }
       }
        return hash;
    }

    //E este método somente exibirá as informações extraídas anteriormente
    //formato:
    //Login:login  host: host	link: url
    //TODO Responsável: Maria Alice
    private static void formattedOut(ArrayList<String> logins, Hashtable<String,String> indexedHosts) {
       Enumeration<String> itr;
       itr = indexedHosts.keys();

       if(logins != null){
            for(int j=0; j < logins.size(); j++){
                System.out.print("Login:"+logins.get(j)+" ");
                if(itr.hasMoreElements()){
                    String host = itr.nextElement();
                    System.out.print("host:"+indexedHosts.get(host)+" ");
                    System.out.print("link:"+host+"\n");
                }
            }
       }
       else System.out.println("Não há informações para exibir");
    }

    //Bobos, não?

}
